perm filename MINE[AI,JMC] blob sn#005450 filedate 1971-08-13 generic text, type T, neo UTF8
00100	MKMOV:	AOS 1,LEVEL
00150		TRZ FL,ATON+GENFL
00200		CAILE 1,4
00300		TRO FL,ATON
00400	FL=10
00500	ATON=1
00600		CAILE 1,2
00700		TRO FL,GENFL
00800	GENFL=2
00850		PUSHJ P,GENPN
00900		MOVE MOVER,COLOR
01000		HRLI MOVER,-20
01100		PUSHJ P,@GMTB(MOVER)
01200		AOBJN MOVER,.-1
01300		TRNN FL,ATON
01400		JRST MINMAX
01500		MOVE 1,LLIM
01600		CAMGE 1,ULIM
01700		JRST MINMAX
01800		MOVE WCOUNT
01900		SUB BCOUNT
02000		SKIPE MCOL
02100		MOVNS
02200		POPJ P,
02300	GMTB:	REPEAT 2,<EXP GMV,GMVN,GMV,GMV,GMVK,GMV,GMVN,GMV
02400		REPEAT 10,<EXP GMVP>>
02500	MINMAX:	MOVE I,LLIM
02510		CAML I,ULIM
02520		JRST EV2
02600	MM1:	CAML I,ULIM
02700		JRST ENDMV
02800		MOVE DEST,1(I)
02900		MOVE MOVER,DEST
03000		LSH MOVER,-6
03050		ANDI MOVER,37
03100		ANDI DEST,77
03200		PUSH P,I
03300		PUSH P,LEVEL
03400		PUSH P,ULIM
03500		MOVE 1,LLIM
03700		MOVEM 1,ULIM
03800		PUSH P,ALPHA
03900		PUSH P,BETA
04000		PUSH P,LLIM
04100		PUSH P,COLOR
04200		MOVEI 20
04300		XORM COLOR
04400		PUSH P,FL
     

00100		JSR GOMOV2
00200		SKIPL BCOUNT
00300		SKIPGE WCOUNT
00400		JRST EVALR
00500		PUSHJ P,MKMOV
00600		JSR REVRT
00700	M31:	POP P,FL
00800		POP P,COLOR
00900		POP P,LLIM
01000		POP P,BETA
01100		POP P,ALPHA
01200		POP P,ULIM
01300		POP P,LEVEL
01400		POP P,I
01450		PUSHJ P,PRTRE
01500	M22:	MOVE 1,LEVEL
01600		TRNE 1,1
01700		JRST MAXIT
01800		CAMG BETA
01900		JRST RMINF
02000		CAML ALPHA
02100		AOJA I,MM1
02200		MOVEM ALPHA
02300		MOVE DEST,1(I)
02400		MOVEM DEST,MTB(1)
02500		CAME BETA
02600		AOJA I,MM1
02700		JRST ENDMV
02800	MAXIT:	CAML ALPHA
02900		JRST RINF
03000		CAMG BETA
03100		AOJA I,MM1
03200		MOVEM BETA
03300		MOVE DEST,1(I)
03400		MOVEM DEST,MTB(1)
03500		CAME ALPHA
03600		AOJA I,MM1
03700	ENDMV:	MOVE ALPHA
03750		MOVE 1,LEVEL
03800		TRNE 1,1
03900		MOVE BETA
04000		POPJ P,
04100	EVALR:	MOVE WCOUNT
04200		SUB BCOUNT
04300		SKIPE MCOL
04400		MOVNS
04800		JRST M31-1
04900	EV2:	MOVE WCOUNT
05000		SUB BCOUNT
05100		SKIPE MCOL
05200		MOVNS
05300		POPJ P,
     

00100	RINF:	MOVE ALPHA
00200		POPJ P,
00300	RMINF:	MOVE BETA
00400		POPJ P,
00450	GOMOV2:	0
00500		SKIPGE T1,OCC(DEST)
00600		JRST GMV21
00700		PUSH P,T1
00800		PUSH P,DEST
00900		PUSH P,MOVER
00950		MOVE MOVER,T1
01000		MOVNI DEST,1
01050		PUSH P,FL
01060		ANDI MOVER,37
01100		PUSHJ P,PUTCH
01150		POP P,FL
01200		POP P,MOVER
01300		MOVE DEST,(P)
01400	MVMD1=4
01500		TROA FL,MVMD1
01600	GMV21:	TRZ FL,MVMD1
01700		PUSH P,FL
01800		PUSH P,LOC(MOVER)
01850		PUSH P,MOVER
01860		ANDI MOVER,37
01870		ANDI DEST,77
01900		PUSHJ P,PUTCH
01950		JRST @GOMOV2
01975	REVRT:	0
01980		POP P,MOVER
02000		POP P,DEST
02010		ANDI MOVER,37
02020		ANDI DEST,77
02100		PUSHJ P,PUTCH
02200		POP P,FL
02300		TRZN FL,MVMD1
02400		JRST @REVRT
02500		POP P,DEST
02600		POP P,MOVER
02650		PUSH P,FL
02660		ANDI MOVER,37
02670		ANDI DEST,77
02700		PUSHJ P,PUTCH
02725		POP P,FL
02750		JRST @REVRT
02900	GMV:	MOVE I,LM(MOVER)
03000		HLRE M,I
03100		JRST PLG4
03200	PLG2:	ADDI I,10
03300		ANDI I,-10
03400	PLG4:	SKIPGE T1,MOVE(I)
03500		JRST PLG3
03510	PLG1:	ANDI T1,77
03520		SKIPGE T2,OCC(T1)
03530		JRST .+4
03540		XOR T2,MOVER
03550		TRNN T2,20
03560		JRST PLG3-2
03600		SETZM COUNT
03700		HRLZI K,NPNM
03800		TRNE FL,ATON
03900		MOVE K,[XWD -1,2]
04000		PUSHJ P,@GENTB(K)
04100		AOBJN K,.-1
04200		PUSHJ P,FILL
04250		SKIPL T1,MOVE+1(I)
04300		AOJA I,PLG1
04400	PLG3:	AOJL M,PLG2
04500		POPJ P,
     

00100	GMVN:	MOVE I,LM(MOVER)
00200		MOVNI M,1
00300		JRST PLG4
00400	GMVK:	MOVE I,LM(MOVER)
00500		SETZM COUNT
00600		SKIPGE T1,MOVE(I)
00700		JRST GMVK1
00710		ANDI T1,77
00720		SKIPGE T2,OCC(T1)
00730		JRST .+4
00740		XOR T2,MOVER
00750		TRNN T2,20
00760		JRST GMVK1
00800		HRLZI K,NPNM
00900		TRNE FL,ATON
01000		MOVE K,[XWD -1,2]
01100		PUSHJ P,@GENTB(K)
01200		AOBJN K,.-1
01300		PUSHJ P,FILL
01400	GMVK1:	ADDI I,7
01500		AOBJN I,GMVK+1
01600		POPJ P,
01700	GMVP:	HRRZ I,LM(MOVER)
01800		SKIPGE T1,MOVE(I)
01850		JRST GMVP2
01900		ANDI T1,77
02000		SKIPGE T2,OCC(T1)
02100		JRST GMVP2
02110		XOR T2,MOVER
02120		TRNN T2,20
02130		JRST GMVP2
02200		HRLZI K,NPNM
02300		TRNE FL,ATON
02400		MOVE K,[XWD -1,2]
02450		SETZM COUNT
02500		PUSHJ P,@GENTB(K)
02600		AOBJN K,.-1
02700		PUSHJ P,FILL
02800	GMVP2:	SKIPGE T1,MOVE+1(I)
02850		JRST GMVP3
02900		ANDI T1,77
03000		SKIPGE T2,OCC(T1)
03100		JRST GMVP3
03110		XOR T2,MOVER
03120		TRNN T2,20
03130		JRST GMVP3
03200		HRLZI K,NPNM
03300		TRNE FL,ATON
03400		MOVE K,[XWD -1,2]
03450		SETZM COUNT
03500		PUSHJ P,@GENTB(K)
03600		AOBJN K,.-1
03700		PUSHJ P,FILL
03800	GMVP3:	TRNE FL,ATON
03900		POPJ P,
04000		SKIPGE T1,MOVE+2(I)
04050		POPJ P,
04100		ANDI T1,77
04200		SKIPL OCC(T1)
04300		POPJ P,
04400		HRLZI K,NPNM
04450		SETZM COUNT
04500		PUSHJ P,@GENTB(K)
04600		AOBJN K,.-1
04700		PUSHJ P,FILL
04800		SKIPGE T1,MOVE+3(I)
04900		POPJ P,
05000		ANDI T1,77
     

00100		SKIPL OCC(T1)
00200		POPJ P,
00300		HRLZI K,NPNM
00350		SETZM COUNT
00400		PUSHJ P,@GENTB(K)
00500		AOBJN K,.-1
00600		JRST FILL
00700	GENTB:	EXP GEN1,GEN2,GEN6,GEN5,GEN9,GEN3,GEN4,GEN8,GEN7
00800	NPNM=-11
00900	GEN1:	ANDI T1,77
01000		SKIPGE T2,OCC(T1)
01100		POPJ P,
01200		SKIPE DEF(T2)
01300		POPJ P,
01400		ANDI T2,20
01500		CAME T2,COLOR
01550		ADDI COUNT,↑D1000
01600		POPJ P,
01700	COUNT=1
01800	GEN2:	SKIPGE T2,OCC(T1)
01900		POPJ P,
02000		MOVE B,KIND(MOVER)
02100		MOVE B,VALUE(B)
02200		MOVE MDIR,KIND(T2)
02300		CAML B,VALUE(MDIR)
02400		POPJ P,
02500		ANDI T2,20
02600		CAME T2,COLOR
02700		ADDI COUNT,↑D400
02800		POPJ P,
02900	GEN3:	SKIPGE COUNT
02950		POPJ P,
03000		MOVE B,COLOR
03100		TRC B,24
03200		MOVE B,ATT(B)
03300		CAIL B,2
03400		ADDI COUNT,20
03500		POPJ P,
     

00100	GEN4:	SKIPGE COUNT
00105		POPJ P,
00110		MOVE ATT(MOVER)
00120		SUB DEF(MOVER)
00130		JUMPG F3
00200		MOVNI B,2
00300		MOVEM B,BEARS#
00400		JRST @GTHRT(MOVER)
00500	GTHRT:	REPEAT 2,<EXP GTHR,GTHN,GTHR,GTHR,GTHK,GTHR,GTHN,GTHR
00600		REPEAT 10,<EXP GTHP>>
00700	GTHR:	MOVE B,LM(MOVER)
00800		HLRE M,B
00900		JRST PLT4
01000	PLT2:	ADDI B,10
01100		ANDI B,-10
01200	PLT4:	SKIPGE I,MOVE(B)
01300		JRST PLT3
01400	PLT1:	ANDI I,77
01500		SKIPGE I,OCC(I)
01600		JRST PLT3-2
01700		ANDI I,20
01800		CAME I,COLOR
01900		AOS BEARS
01950		SKIPL I,MOVE+1(B)
02000		AOJA B,PLT1
02100	PLT3:	AOJL M,PLT2
02200	QTHR:	SKIPL BEARS
02300		ADDI COUNT,↑D10
02400		POPJ P,
02500	GTHN:	MOVE B,LM(MOVER)
02600		MOVNI M,1
02700		JRST PLT4
02800	GTHK:	MOVE B,LM(MOVER)
02900		SKIPGE I,MOVE(B)
03000		JRST GTHK1
03100		ANDI I,77
03200		SKIPGE I,OCC(I)
03300		JRST GTHK1
03400		ANDI I,20
03500		CAME I,COLOR
03600		AOS BEARS
03700	GTHK1:	ADDI I,7
03800		AOBJN I,GTHK+1
03900		JRST QTHR
04000	GTHP:	HRRZ B,LM(MOVER)
04100		SKIPGE I,MOVE(B)
04150		POPJ P,
04200		ANDI I,77
04300		SKIPGE I,OCC(I)
     

00100		POPJ P,
00200		ANDI I,20
00300		CAME I,COLOR
00400		POPJ P,
00500		SKIPGE I,MOVE+1(B)
00550		POPJ P,
00600		ANDI I,77
00700		SKIPGE I,OCC(I)
00800		POPJ P,
00900		ANDI I,20
01000		CAME I,COLOR
01100		POPJ P,
01200		ADDI COUNT,↑D10
01300		POPJ P,
01400	GEN5:	TRZ FL,YSTH
01500		SETZM THTB
01600		MOVE B,[XWD THTB,THTB+1]
01700		BLT B,THTB+37
01800		MOVE B,COLOR
01900		HRLI B,-20
02000	GN5A:	MOVE MDIR,ATT(B)
02100		SUB MDIR,DEF(B)
02200		SKIPLE MDIR
02300		MOVEM MDIR,THTB(B)
02400		AOBJN B,GN5A
02500		JSR GOMOV
02600		MOVE B,COLOR
02700		HRLI B,-20
02800		TRZ FL,YSTH
02900	YSTH=10
03000	GN5B:	MOVE MDIR,ATT(B)
03100		SUB MDIR,DEF(B)
03120		SKIPN THTB(B)
03140		JRST GN5C
03200		CAMGE MDIR,THTB(B)
03300		TROA FL,YSTH
03400	GN5C:	AOBJN B,GN5B
03500		TRZE FL,YSTH
03600		ADDI COUNT,↑D4
03700		POPJ P,
03800	GEN6:	ANDI T1,77
03900		SKIPGE T2,OCC(T1)
04000		POPJ P,
04100		ANDI T2,20
04200		CAMN T2,COLOR
04400		POPJ P,
04500		MOVE T2,OCC(T1)
04600		MOVE T2,KIND(T2)
04700		MOVE T2,VALUE(T2)
04800		MOVE BCOUNT
04900		SUB WCOUNT
05000		SKIPN MCOL
05100		MOVNS
05200		SKIPN COLOR
05300		ADD T2
05400		SKIPE COLOR
05500		SUB T2
05510		MOVE B,LEVEL
05520		TRNN B,1
05530		JRST GEN6A
05600		CAMLE BETA
05700		ADDI COUNT,↑D2
05800		POPJ P,
05900	GEN6A:	CAMGE ALPHA
06000		ADDI COUNT,2
06100		POPJ P,
     

00100	GEN7:	SKIPGE COUNT
00150		JRST UNMOVE
00200		MOVE B,COLOR
00300		TRC B,24
00400		SKIPE ATT(B)
00500		ADDI COUNT,1
00600		JRST UNMOVE
01210	FILL:	SKIPGE COUNT
01220		POPJ P,
01300		TRNE FL,GENFL
01400		JUMPE COUNT,F3
01500		PUSH P,MOVER
01600		LSH MOVER,6
01700		IOR MOVER,T1
01800		HRL MOVER,COUNT
01900		MOVE COUNT,LLIM
02000		SUB COUNT,ULIM
02200		JUMPE COUNT,INST2
02300		HRLS COUNT
02400		HRR COUNT,LLIM
02500	FILL1:	CAML MOVER,1(COUNT)
02600		JRST INST
02700		AOBJN COUNT,FILL1
02750		MOVE COUNT,ULIM
02800	INST:	MOVE B,LLIM
02900		SUBI B,1
03000		HRL B,LLIM
03100		BLT B,(COUNT)
03200	INS3:	MOVEM MOVER,(COUNT)
03300		SOS LLIM
03400		POP P,MOVER
03500	F3:	POPJ P,
03600	INST2:	MOVE COUNT,LLIM
03700		JRST INS3
03750	GOMOV:	0
03760		POP P,SVITRT#
03800		MOVEM MOVER,SVMVR#
03900		PUSH P,I
04000		MOVEM K,SVK#
04100		PUSH P,M
04200		MOVEM T1,SVT1#
04250		MOVE DEST,T1
04300		SKIPGE T1,OCC(DEST)
04400		JRST GMV1
04500		PUSH P,T1
04600		PUSH P,DEST
04700		PUSH P,MOVER
04750		MOVE MOVER,T1
04800		MOVNI DEST,1
04850		PUSH P,FL
04860		ANDI MOVER,37
04900		PUSHJ P,PUTCH
04950		POP P,FL
05000		POP P,MOVER
05100		MOVE DEST,(P)
05200	MVMD2=20
05300		TROA FL,MVMD2
05400	GMV1:	TRZ FL,MVMD2
05500		PUSH P,FL
05600		PUSH P,LOC(MOVER)
05650		PUSH P,MOVER
05660		ANDI MOVER,37
05670		ANDI DEST,77
05700		PUSHJ P,PUTCH
05710		PUSH P,SVITRT
05720		MOVE K,SVK
05730		MOVE T1,SVT1
05740		MOVE MOVER,SVMVR
05750		JRST @GOMOV
     

00010	UNMOVE:	POP P,SVITRT
00020		MOVEM K,SVK
00030		MOVEM T1,SVT1
00040		MOVEM MOVER,SVMVR
00050		POP P,MOVER
00100		POP P,DEST
00110		ANDI MOVER,37
00120		ANDI DEST,77
00200		PUSHJ P,PUTCH
00300		POP P,FL
00400		TRZN FL,MVMD2
00500		JRST UMV1
00600		POP P,DEST
00700		POP P,MOVER
00750		PUSH P,FL
00760		ANDI MOVER,37
00770		ANDI DEST,77
00800		PUSHJ P,PUTCH
00850		POP P,FL
00900	UMV1:	MOVE T1,SVT1
01000		POP P,M
01100		MOVE K,SVK
01150		POP P,I
01200		MOVE MOVER,SVMVR
01300		JRST @SVITRT
01400	MTB:	BLOCK 100
01500	THTB:	BLOCK 40
01600	MVTB:	BLOCK 4000
01700	PRTRE:	PUSH P,0
01800		PUSH P,I
01850		PUSH P,I+1
01900		MOVE K,LEVEL
02000		MOVE B,I
02100		SOJE K,NTAB
02200		MOVEI 11
02300		PUSHJ P,OCHR
02400		SOJG K,.-2
02500	NTAB:	MOVE 2,1(B)
02600		LSH 2,-6
02700		ANDI 2,37
02800		PUSHJ P,PPRNT
02900		MOVEI "-"
03000		PUSHJ P,OCHR
03100		MOVE I,1(B)
03200		ANDI I,77
03300		PUSHJ P,NOUT1
03400		MOVEI " "
03500		PUSHJ P,OCHR
     

00100		HLRZ I,1(B)
00200		PUSHJ P,NOUT2
00300		MOVEI " "
00400		PUSHJ P,OCHR
00500		MOVE I,-2(P)
00600		JUMPGE I,NONEG
00700		MOVEI "-"
00800		PUSHJ P,OCHR
00900		MOVNS I
01000	NONEG:	PUSHJ P,NOUT2
01100		MOVEI " "
01150		PUSHJ P,OCHR
01200		MOVE I,ALPHA
01300		JUMPGE I,NONEG1
01400		MOVEI "-"
01500		PUSHJ P,OCHR
01600		MOVNS I
01700	NONEG1:	PUSHJ P,NOUT2
01800		MOVEI " "
01850		PUSHJ P,OCHR
01900		MOVE I,BETA
02000		JUMPGE I,NONEG2
02100		MOVEI "-"
02200		PUSHJ P,OCHR
02300		MOVNS I
02400	NONEG2:	PUSHJ P,NOUT2
02500		MOVEI 1,CMS
02600		PUSHJ P,TXTOUT
02650		POP P,I+1
02700		POP P,I
02800		POP P,0
02900		POPJ P,
03000	GENPN:	SETZM PINTB
03100		MOVE B,[XWD PINTB,PINTB+1]
03200		BLT B,PINTB+37
03300		HRLZI MDIR,-100
03400		SKIPN COLOR
03500		HRRI MDIR,100
03600	GPNS2:	SKIPGE T2,KDIR(MDIR)
03700		JRST GPNS1
03800		LSH T2,6
03900		IORI T2,(MDIR)
04000		SKIPGE DIR,JBEAR(T2)
     

00100		JRST GPNS1
00200		MOVE B,DIR
00300		ANDI B,20
00400		CAMN B,COLOR
00500		JRST GPNS1
00600		LSH T2,-6
00700		MOVE N,KIND(DIR)
00800		CAIE N,QUEEN
00900		CAMN N,PINTB2(T2)
01000		SETOM PINTB(DIR)
01100	GPNS1:	AOBJN MDIR,GPNS2
01200		POPJ P,
01300	PINTB:	BLOCK 40
01400	PINTB2:	REPEAT 4,<EXP ROOK,BISHOP>
01500	GEN9:	MOVE I,COLOR
01600		ADDI I,4
01700		SKIPE ATT(I)
01800		SUBI COUNT,-1
01900		POPJ P,
02000	GEN8:	SKIPGE COUNT
02010		POPJ P,
02012		SETZM ATUDF#
02014		SETZM ATPN#
02016		SETZM ATHV#
02020		JRST @GATKB(MOVER)
02100	GATKB:	REPEAT 2,<EXP GATR,GATN,GATR,GATR,GATK,GATR,GATN,GATR
02200		REPEAT 10,<EXP GATP>>
02300	GATR:	MOVE B,LM(MOVER)
02400		HLRE M,B
02500		JRST PLAT4
02600	PLAT2:	ADDI B,10
02700		ANDI B,-10
02800	PLAT4:	SKIPGE I,MOVE(B)
02900		JRST PLAT3
03000	PLAT1:	ANDI I,77
03100		SKIPGE I,OCC(I)
03200		JRST PLAT3-2
03300		MOVE MDIR,I
03400		ANDI MDIR,20
03500		CAMN MDIR,COLOR
03600		JRST PLAT3-2
03700		SKIPGE PINTB(I)
03800		AOS ATPN
03900		SKIPN DEF(I)
04000		AOS ATUDF
04100		MOVE MDIR,KIND(MOVER)
04200		MOVE MDIR,VALUE(MDIR)
04300		MOVE I,KIND(I)
04400		CAMGE MDIR,VALUE(I)
04500		AOS ATHV
     

00100		SKIPL I,MOVE+1(B)
00200		AOJA B,PLAT1
00300	PLAT3:	AOJL M,PLAT2
00400		JRST FNOUT
00500	GATN:	MOVE B,LM(MOVER)
00600		MOVNI M,1
00700		JRST PLAT4
00800	GATK:	MOVE B,LM(MOVER)
00900		SKIPGE I,MOVE(B)
01000		JRST GATK1
01100		ANDI I,77
01200		SKIPGE I,OCC(I)
01300		JRST GATK1
01400		MOVE MDIR,I
01500		ANDI MDIR,20
01600		CAMN MDIR,COLOR
01700		JRST GATK1
01800		SKIPGE PINTB(I)
01900		AOS ATPN
02000		SKIPN DEF(I)
02100		AOS ATUDF
02200		MOVE MDIR,KIND(MOVER)
02300		MOVE MDIR,VALUE(MDIR)
02400		MOVE I,KIND(I)
02500		CAMGE MDIR,VALUE(I)
02600		AOS ATHV
02700	GATK1:	ADDI I,7
02800		AOBJN I,GATK+1
02900		JRST FNOUT
03000	GATP:	HRRZ B,LM(MOVER)
03100		SKIPGE I,MOVE(B)
03200		JRST GATP2
03300		ANDI I,77
03400		SKIPGE I,OCC(I)
03500		JRST GATP2
03600		MOVE MDIR,I
03700		ANDI MDIR,20
03800		CAME MDIR,COLOR
03900		JRST GATP2
04000		SKIPGE PINTB(I)
04100		AOS ATPN
04200		SKIPN DEF(I)
04300		AOS ATUDF
04400		MOVE MDIR,KIND(MOVER)
04500		MOVE MDIR,VALUE(MDIR)
04600		MOVE I,KIND(I)
04700		CAMGE MDIR,VALUE(I)
04800		AOS ATHV
     

00100	GATP2:	SKIPGE I,MOVE+1(B)
00200		POPJ P,
00300		ANDI I,77
00400		SKIPGE I,OCC(I)
00500		POPJ P,
00600		MOVE MDIR,I
00700		ANDI MDIR,20
00800		CAME MDIR,COLOR
00900		POPJ P,
01000		SKIPGE PINTB(I)
01100		AOS ATPN
01200		SKIPN DEF(I)
01300		AOS ATUDF
01400		MOVE MDIR,KIND(MOVER)
01500		MOVE MDIR,VALUE(MDIR)
01600		MOVE I,KIND(I)
01700		CAMGE MDIR,VALUE(I)
01800		AOS ATHV
01900	FNOUT:	SKIPE ATPN
02000		ADDI COUNT,200
02100		SKIPE ATUDF
02200		ADDI COUNT,40
02300		SKIPE ATHV
02400		ADDI COUNT,100
02500		POPJ P,